iT邦幫忙

DAY 6
2

Ruby on Rails 學習手札系列 第 6

[Rails]第6天 用scaffold快速做CRUD

  • 分享至 

  • xImage
  •  

什麼是CRUD勒,其實就是新增(Create)、讀取(Read)、更新(Update)、刪除(Delete)。通常一個動態網站的形成,至少都有這樣的功能,Rails有內建一個功能就是可以馬上把CRUD做出來,而且還是可以使用的。
有一些原理我會慢慢講,不過有些沒提到的,歡迎可以留言一起討論一下。我不會的話還是會幫大家解決啦。
通常我們要做一個CRUD大概要花一段時間來刻,不過今天介紹的東西可以讓大家幾分鐘的時間就處理完成

1.建立scaffold

 $ rails g scaffold post title:string content:text

rails g scaffold post title:string content:text
rails g => rails generate 產生新的程式碼
scaffold => 自動化鷹架
title => 欄位名稱
string => 資料型態
content => 欄位名稱
text => 資料型態

有關rails 定義的 資料型態

rails g scaffold會幫你做的事有:
1.定義欄位資料
2.建立model
3.建立test
4.在router建立resource
5.建立controller 以及自動新增CRUD
6.建立controller的test
7.建立helper
8.建立helper的test
9.建立js
10.建立css
11.建立scaffolds預設的css

2.新增table
rails 控制欄位的地方是在db/migrate,所以剛剛scaffold幫我定義的資料會生一個檔案在dv/migrate裡,打開來看來長這樣

class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.text :content

      t.timestamps
    end
  end
end

t.timestamps 是會自動幫你生created_at跟updated_at,也就是新增及修改資料時會幫你建立資料
詳細請看:http://ihower.tw/rails3/migrations.html#id154

OK那我們直接執行下面這行

 $ rake db:migrate

rake就會透過db/migrate裡的檔案來幫你做資料庫的變動,所以檔案名稱都會長這樣
db/migrate/20121010081617_create_posts.rb
為了讓多人開發的時候,解決會有重覆修改資料庫的問題。

3.資料庫呢???
怪了,那資料庫不用設定嗎?
當然要啦,因為rails 預設是使用sqlite所以會在db/建立資料庫
如果要修改資料庫的設定可以到config/database.yml 去就修改

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000

詳細資料請參考看 http://guides.rubyonrails.org/getting_started.html#configuring-a-database

4.上線啦...
瀏覽器打上http://127.0.0.1:3000/posts

也可以新增

新增成功

=========
雖然scaffold可以讓你馬上又快速的做上一個馬上建立好MVC的而且又有CRUD的功能,但其實有些事情沒辦法scaffold做,還是要用手刻的會比較好一點,尤其是新手的時候最好還是先乖乖的手刻。


上一篇
[Rails]第5天 Hello World
系列文
Ruby on Rails 學習手札6
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言